iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
0
Software Development

從Java進入AWS部署RESTful API的心路歷程系列 第 25

Day25-概論(十三)DynamoDBMapperConfig

  • 分享至 

  • xImage
  •  

DynamoDBMapper 的可选配置设置

使用mapper時我們項目進行save測試會發現即便是沒給予資料的屬性,只要是bean當中有定義,就會被覆蓋為初始值。或者若打算更新項目時,DynamoDB當中並不存在相同主索引的項目,就會變成是新增資料。這時候我們需要給予mapper額外的設定,來進行需要的資料操作性質。

所以本篇先來看DynamoDBMapperConfig提供的儲存設定項目

SaveBehavior

DynamoDBMapperConfig.SaveBehavior 列舉值有以下幾個

  • APPEND_SET
    對於(String, Number, Binary)類型屬性的操作如同UPDATE_SKIP_NULL_ATTRIBUTES
  • CLOBBER
    所有屬性接被取代,包含未指定值及POJO未定義的屬性會被清空
  • PUT
    所有屬性接被取代,包含未指定值及POJO未定義的屬性會被清空
  • UPDATE**(預設值)**
    更新有給值的屬性,未指定值的屬性會被清空,POJO未定義的屬性則不更動
  • UPDATE_SKIP_NULL_ATTRIBUTES
    更新給值的屬性,未指定及未定義的屬性皆不更動

以預設值UPDATE來說,應該符合POST新增及PUT新增或完全更新,不過若是PATCH我們就需要使用UPDATE_SKIP_NULL_ATTRIBUTES來達到部分更新的效果了

ConsistentReads

DynamoDBMapperConfig.ConsistentReads 列舉值

  • EVENTUAL— 映射器執行個體使用最終一致讀取請求。
  • CONSISTENT— 映射器執行個體使用強式一致讀取請求。您可以搭配使用這個選用設定與 load、query 或 scan 操作。強式一致讀取具有效能和帳單隱憂。

預設使用EVENTUAL,如果有要求最新資料的需求則可使用CONSISTENT,但是就如文件所述,最好要查閱效能跟收費影響

PaginationLoadingStrategy

DynamoDBMapperConfig.PaginationLoadingStrategy列舉值
控制映射器執行個體如何處理分頁資料清單,例如 query 或 scan 的結果:

  • LAZY_LOADING— 映射器執行個體會在可能時載入資料,並將所有載入的結果保留在記憶體中。
  • EAGER_LOADING— 映射器執行個體會在初始化清單時立即載入資料。
  • ITERATION_ONLY— 您只能使用從清單中讀取的迭代器。在反覆運算期間,清單會先清除所有先前的結果,再載入下一頁,因此清單最多會將一頁的已載入結果保留在記憶體中。這也表示清單只能重複使用一次。處理大型項目時,建議使用此策略,以減少記憶體負擔。
    如果您未指定映射器執行個體的分頁載入策略,則預設值為 LAZY_LOADING。

使用此設定取決於你打算取得的資料查詢量及處理資料的方法

TableNameOverride

DynamoDBMapperConfig.TableNameOverride 物件則用以取代bean所註釋的資料表對象,當你需要用同樣的項目描述但是另外儲存操作在其他資料表時可用。


上一篇
Day24-實作(七)Java DAO & DynamoDBMapper
下一篇
Day26-概論(十四)DynamoDBSaveExpression
系列文
從Java進入AWS部署RESTful API的心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言